﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tema2_Adabd.BusinessLayer;

namespace Tema2_Adabd
{
    public partial class AdaugaUtilizator : Form
    {
        private Utilizator utilizator;
        private bool stergere;

        public AdaugaUtilizator(Utilizator user,bool stergere)
        {
            InitializeComponent();
            utilizator = user;
            if (stergere == true)
            {
                lbParola.Visible = false;
                lbParola.Enabled = false;
                txtParola.Visible =false;
                txtParola.Enabled = false;
                checkBoxAdmin.Visible = false;
                checkBoxAdmin.Enabled = false;
                checkBoxUser.Visible = false;
                checkBoxUser.Enabled = false;

                btnAdauga.Text = "Sterge";
                btnRenuntaLaAdaugare.Text = "Renunta la stergere";
                this.Name = "Stergere utilizator";

                lbNumeNou.Text = "Numele utilizatorului de sters";
            }
            else
            {
                lbNumeNou.Text = "Nume nou utilizator";
                lbParola.Visible = true;
                lbParola.Enabled = true;
                txtParola.Visible = true;
                txtParola.Enabled = true;
                checkBoxAdmin.Visible = true;
                checkBoxAdmin.Enabled = true;
                checkBoxUser.Visible = true;
                checkBoxUser.Enabled = true;

                btnAdauga.Text = "Adauga";
                btnRenuntaLaAdaugare.Text = "Renunta la adaugare";
                this.Name = "Adaugare utilizator";
            }
            this.stergere = stergere;
        }

        private void clkAdaugaUtilizatorNou(object sender, EventArgs e)
        {
            if (txtNumeNou.Text == "")
            {
                MessageBox.Show("Nu ati completat campul cu numele utilizatorului.");
                return;
            }
            if (stergere == true)
            {
                try
                {
                    utilizator.stergeUtilizator(txtNumeNou.Text);
                    MessageBox.Show("Utilizatorul a fost sters cu succes.");
                    this.Close();
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.ToString());
                }
            }
            else
                try
                {
                    if (checkBoxAdmin.Checked == false && checkBoxUser.Checked == false)
                    {
                        MessageBox.Show("Nu ati completat niciunul din campurile Admin sau User.");
                        return;
                    }
                    if (checkBoxAdmin.Checked == true && checkBoxUser.Checked == true)
                    {
                        MessageBox.Show("Ati completat niciunul din campurile Admin sau User.");
                        return;
                    }

                    if (txtNumeNou.Text == "")
                    {
                        MessageBox.Show("Nu ati completat unul dintre campuri.");
                        return;
                    }
                    if (utilizator.numeUtilizatorExistent(txtNumeNou.Text) == true)
                    {
                        MessageBox.Show("Exista deja un utilizator cu acest nume.");
                        return;
                    }

                    string parola = PasswordHash.CreateHash(txtParola.Text);

                    utilizator.creeazaUtilizator(txtNumeNou.Text, parola);

                    if (checkBoxAdmin.Checked == true)
                        utilizator.adaugaPermisiuni(txtNumeNou.Text,
                            new string[]{"creare utilizatori","stergere utilizatori","adaugare produs","editare produs",
                            "stergere produs","vizualizare produse","printare produse"});
                    else
                        utilizator.adaugaPermisiuni(txtNumeNou.Text, new string[]{"adaugare produs","editare produs",
                            "vizualizare produse","printare produse"});

                    MessageBox.Show("Utilizatorul a fost adaugat cu succes.");
                    this.Close();
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.ToString());
                }
        }

        private void clkRenuntaLaAdaugare(object sender, EventArgs e)
        {
            string mesajRenuntare = "Sunteti sigur/sigura ca doriti sa renuntati la ";
            if (stergere == true)
                mesajRenuntare +="stergerea";
            else
                mesajRenuntare += "adaugarea";
            mesajRenuntare += " unui nou utilizator?";
            DialogResult dr = MessageBox.Show(mesajRenuntare,"", MessageBoxButtons.YesNo);
            if (dr == DialogResult.Yes)
                this.Dispose();
        }
     
    }
}
